package com.hsnn.medstgmini.base.std.service;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.base.std.model.StdDrugQualitySpec;
import com.hsnn.medstgmini.base.std.model.StdDrugQualitySpecLog;
import com.hsnn.medstgmini.util.Pagination;

public interface StdDrugQualitySpecManager {
	
	
	int saveOrAddDrugSpec(StdDrugQualitySpec stdDrugQualitySpec);
	/**
	 *@category 查询品规库列表
	 *@author zhouqi
	 *@date 2015年8月18日10:34:51
	 *@param Pagination
	 *@return Pagination
	 */
	Pagination getStdDrugQualitySpecList(Pagination page);
	
	/**
	 *@category 修改或添加药品品规
	 *@author zhouqi
	 *@date 2015年8月18日10:34:56
	 *@param StdDrugQualitySpec
	 *@return Boolean 保存成功返回true，失败返回false
	 */
	void saveOrAddDrugQualitySpec(Pagination page);
	
	/**
	 *@category 根据id查找药品品规
	 *@author zhouqi
	 *@date 2015年8月18日10:35:01
	 *@param String id
	 *@return StdDrugQualitySpec
	 */
	StdDrugQualitySpec getDrugQualitySpecById(String id);
	
	/**
	 *@category 改变药品品规状态
	 *@author zhouqi
	 *@date 2015年8月18日10:35:07
	 *@param StdDrugQualitySpec
	 *@return Boolean 保存成功返回true，失败返回false
	 */
	Boolean changDrugQualitySpecStatus(StdDrugQualitySpec stdDrugQualitySpec);
	
	/**
	 *@category 获取修改前后状态对比
	 *@author zhouqi
	 *@date 2015年8月18日10:35:11
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	List<StdDrugQualitySpecLog> getCompareStatus(String updDatetime, String id);
	
	/**
	 *@category 获取日志列表展示页面
	 *@author zhouqi
	 *@date 2015年8月18日10:35:17
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	Pagination getStdDrugQualitySpecLogList(Pagination page,StdDrugQualitySpec stdDrugQualitySpec);
	
	/**
	 *@category 保存或新增品规库日志
	 *@author zhouqi
	 *@date 2015年8月18日10:35:22
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	Boolean saveOrAddDrugQualitySpecLog(StdDrugQualitySpecLog stdDrugQualitySpecLog);
	
	/**
	 *@category 根据Id查找品规日志
	 *@author zhouqi
	 *@date 2015年8月18日10:35:26
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	StdDrugQualitySpec getStdDrugQualitySpecLogById(String logId);
	
	/**
	 * 品规库维护记录详情
	 * @param page
	 * @return
	 */
	List<Map<String,Object>> getStdDrugQualitySpecLogDetail(StdDrugQualitySpecLog stdDrugQualitySpecLog);
	
	/**
	 * 
	 * @category 品规库 新增编辑  剂型 弹窗
	 * @author 言科
	 * @date 2015年9月25日 String
	 */
	
	/**
	 * 
	 * @category 品规库 新增编辑  剂型 弹窗
	 * @author 言科
	 * @date 2015年9月25日 String
	 */
	Pagination getStdDrugQualitySpecDrugForm(Pagination page);
	
	/**
	 * 
	 * @category 品规库 新增编辑  规格 弹窗
	 * @author 言科
	 * @date 2015年9月25日 String
	 */
	Pagination getStdDrugQualitySpecDrugSpec(Pagination page);
	
	/**
	 * @category 校验编码的重复性
	 * @author zhouqi
	 * @date 2015年9月25日 
	 */
	List<StdDrugQualitySpec> validRep(StdDrugQualitySpec stdDrugQualitySpec);
	
	void exportExcel(Pagination page,OutputStream os);
	public List<Map<String, Object>> getQualityspec(String drugName, String formName, String specName);
}
